/*
 *   项目需求公共变量
 *
 * 备注：成员可以添加公共变量，添加后请做两件事：
 *      1.为你的变量添加注释，并取一个有语义的名称
 *      2.将新增的变量发送到群里，告知全体成员！【重要】
 *
 */
const Common = {
	/**
	 * 将传入地址拆分成省、市、地区三个部分
	 * @param {全地址字符串} str 字符串
	 * @returns 返回地址数组
	 */
	splitAddress: function (str = "") {
		const Province = str.replace(
			/^浙江省|上海市|北京市|天津市|重庆市|黑龙江省|吉林省|辽宁省|内蒙古自治区|河北省|新疆维吾尔自治区|甘肃省|青海省|陕西省|宁夏回族自治区|河南省|山东省|山西省|安徽省|湖北省|湖南省|江苏省|四川省|贵州省|云南省|广西壮族自治区|西藏自治区|江西省|广东省|福建省|台湾省|海南省|香港特别行政区|澳门特别行政区$/,
			""
		)
		const market = Province.replace(/^.+市/, "")
		return [str.replace(Province, ""), Province.replace(market, ""), market]
	},
	/**
	 * 手机号校验
	 * @param {需要校验的手机号} str 手机号字符串
	 * @returns 返回布尔值
	 */
	phoneNumberCheck: function (str = "") {
		return /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1589]))\d{8}$/.test(
			str
		)
	},
	/**
	 * 邮箱校验
	 * @param {需要校验的邮箱} str 邮箱字符串
	 * @returns 返回布尔值
	 */
	emailCheck: function (str = "") {
		return /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(
			str
		)
	},
	/**
	 * 网址校验
	 * @param {需要校验的网址} str 网址字符串
	 * @returns 返回布尔值
	 */
	websiteCheck: function (str = "") {
		return /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/.test(
			str
		)
	},
	/**
	 * 密码校验（必须；大写、小写、数字、特殊字符）
	 * @param {需要校验的密码} str 密码字符串
	 * @returns 返回布尔值
	 */
	passwordCheck: function (str = "") {
		return /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/.test(
			str
		)
	},
	/**
	 * 长度匹配
	 * @param {目标字符串} str 待匹配的字符串
	 * @param {目标长度} digit 需要的长度
	 * @returns 返回布尔值
	 */
	digitCheck: function (str = "", digit = 0) {
		return str.length == digit
	}
}
export { Common }
